bitkeeper revision 1.1236.32.6 (4236fad0vAzmnGrz_SutQj_CuamHkg)
authormafetter@fleming.research <mafetter@fleming.research>
Tue, 15 Mar 2005 15:10:08 +0000 (15:10 +0000)
committermafetter@fleming.research <mafetter@fleming.research>
Tue, 15 Mar 2005 15:10:08 +0000 (15:10 +0000)
Yet a bit more paranoia in the code.
No functional changes.  Just made the error checking style more
consistent.

Signed-off-by: michael.fetterman@cl.cam.ac.uk
xen/arch/x86/shadow.c
xen/include/asm-x86/shadow.h

index 63cadb782096daeca453787cf24552356a6138ba..7527b1db2a38265a61efad8767acdb7d148340bc 100644 (file)
@@ -1103,7 +1103,8 @@ static unsigned long shadow_l2_table(
             // shadow_mode_translate (but not external) sl2 tables hold a
             // ref to their hl2.
             //
-            get_shadow_ref(hl2mfn);
+            if ( !get_shadow_ref(hl2mfn) )
+                BUG();
             
             spl2e[l2_table_offset(LINEAR_PT_VIRT_START)] =
                 mk_l2_pgentry((hl2mfn << PAGE_SHIFT) | __PAGE_HYPERVISOR);
@@ -1178,7 +1179,7 @@ void shadow_map_l1_into_current_l2(unsigned long va)
     ASSERT( !(old_sl2e & _PAGE_PRESENT) );
 #endif
 
-    if (!get_shadow_ref(sl1mfn))
+    if ( !get_shadow_ref(sl1mfn) )
         BUG();
     l2pde_general(d, &gl2e, &sl2e, sl1mfn);
     __guest_set_l2e(ed, va, gl2e);
@@ -1298,7 +1299,8 @@ shadow_make_snapshot(
         BUG(); /* XXX FIXME: try a shadow flush to free up some memory. */
     }
 
-    get_shadow_ref(smfn);
+    if ( !get_shadow_ref(smfn) )
+        BUG();
 
     original = map_domain_mem(gmfn << PAGE_SHIFT);
     snapshot = map_domain_mem(smfn << PAGE_SHIFT);
@@ -1341,13 +1343,7 @@ shadow_mark_mfn_out_of_sync(struct exec_domain *ed, unsigned long gpfn,
 
     ASSERT(spin_is_locked(&d->arch.shadow_lock));
     ASSERT(pfn_is_ram(mfn));
-    //ASSERT((page->u.inuse.type_info & PGT_type_mask) == PGT_writable_page);
-    if (!((page->u.inuse.type_info & PGT_type_mask) == PGT_writable_page))
-    {
-        printk("assertion failed: gpfn=%p gmfn=%p t=%p\n",
-               gpfn, mfn, page->u.inuse.type_info);
-        BUG();
-    }
+    ASSERT((page->u.inuse.type_info & PGT_type_mask) == PGT_writable_page);
 
     FSH_LOG("mark_mfn_out_of_sync(gpfn=%p, mfn=%p) c=%p t=%p",
             gpfn, mfn, page->count_info, page->u.inuse.type_info);
@@ -1378,7 +1374,7 @@ shadow_mark_mfn_out_of_sync(struct exec_domain *ed, unsigned long gpfn,
     return entry;
 }
 
-void shadow_mark_out_of_sync(
+void shadow_mark_va_out_of_sync(
     struct exec_domain *ed, unsigned long gpfn, unsigned long mfn, unsigned long va)
 {
     struct out_of_sync_entry *entry =
@@ -1407,7 +1403,8 @@ void shadow_mark_out_of_sync(
     // Increment shadow's page count to represent the reference
     // inherent in entry->writable_pl1e
     //
-    get_shadow_ref(sl2e >> PAGE_SHIFT);
+    if ( !get_shadow_ref(sl2e >> PAGE_SHIFT) )
+        BUG();
 
     FSH_LOG("mark_out_of_sync(va=%p -> writable_pl1e=%p)",
             va, entry->writable_pl1e);
@@ -1917,7 +1914,8 @@ void __update_pagetables(struct exec_domain *ed)
      */
     if ( unlikely(!(smfn = __shadow_status(d, gpfn, PGT_base_page_table))) )
         smfn = shadow_l2_table(d, gpfn, gmfn);
-    get_shadow_ref(smfn);
+    if ( !get_shadow_ref(smfn) )
+        BUG();
     if ( pagetable_val(ed->arch.shadow_table) )
         put_shadow_ref(pagetable_val(ed->arch.shadow_table) >> PAGE_SHIFT);
     ed->arch.shadow_table = mk_pagetable(smfn << PAGE_SHIFT);
@@ -1945,7 +1943,8 @@ void __update_pagetables(struct exec_domain *ed)
     {
         if ( unlikely(!(hl2mfn = __shadow_status(d, gpfn, PGT_hl2_shadow))) )
             hl2mfn = shadow_hl2_table(d, gpfn, gmfn, smfn);
-        get_shadow_ref(hl2mfn);
+        if ( !get_shadow_ref(hl2mfn) )
+            BUG();
 
         if ( ed->arch.hl2_vtable )
             unmap_domain_mem(ed->arch.hl2_vtable);
index b7ab004c43ffa16a2534f9ba36abb08991122825..dc64ab0054011f9c9eb9ed6cd8d1bcf206d9e11b 100644 (file)
@@ -396,7 +396,8 @@ shadow_pin(unsigned long smfn)
     ASSERT( !(frame_table[smfn].u.inuse.type_info & PGT_pinned) );
 
     frame_table[smfn].u.inuse.type_info |= PGT_pinned;
-    get_shadow_ref(smfn);
+    if ( !get_shadow_ref(smfn) )
+        BUG();
 }
 
 static inline void
@@ -464,7 +465,7 @@ static inline int mark_dirty(struct domain *d, unsigned int mfn)
 
 /************************************************************************/
 
-extern void shadow_mark_out_of_sync(
+extern void shadow_mark_va_out_of_sync(
     struct exec_domain *ed, unsigned long gpfn, unsigned long mfn,
     unsigned long va);
 
@@ -497,7 +498,7 @@ static inline void l1pte_write_fault(
         __mark_dirty(d, mfn);
 
     if ( mfn_is_page_table(mfn) )
-        shadow_mark_out_of_sync(ed, gpfn, mfn, va);
+        shadow_mark_va_out_of_sync(ed, gpfn, mfn, va);
 
     *gpte_p = gpte;
     *spte_p = spte;
@@ -1144,7 +1145,7 @@ shadow_set_l1e(unsigned long va, unsigned long new_spte, int create_l1_shadow)
             if ( sl1mfn )
             {
                 perfc_incrc(shadow_set_l1e_unlinked);
-                if (!get_shadow_ref(sl1mfn))
+                if ( !get_shadow_ref(sl1mfn) )
                     BUG();
                 l2pde_general(d, &gpde, &sl2e, sl1mfn);
                 __guest_set_l2e(ed, va, gpde);